23

» WarCraft 3 / Герой

Похожие вопросы:

ответ
так в триггере всё верно же
переносимый предмет типа отсутствует, т.е равен 0
и проданный предмет тоже 0
0 == 0
всё верно
что написал то и получил
ответ
8gabriel8, есть только одно но
твоя система отлавливает любой урон а не только урон с руки
и хз нафига вообще тут 3 триггера
вот статья про отлов урона на гуи
есть 2 способа определить что это урон с руки (ну и мемхак ещё)
  1. давать юниту орб вешающий баф (сферу яда например) и при получении урона проверять наличие этого баффа, если есть баф то значит урон с руки и удаляем баф
  2. использовать скилл рунных браслетов с защитой от магии равной 2
в результате весь получаемый магический урон будет отрицательным
если полученный урон (далее dmg) отрицательный то урон нанесён магией и снимаем юниту dmg*-2 хп (для того чтобы полученный урон не был отрицательным)
ответ
~8gabriel8:
К сожалению, я нашёл лишь условие "количество предметов у юнита" о типе предметов, там нет и речи
Верно, мой косяк. Надо циклом перебирать предметы. Вот карта с триггером и скрин:

23

» WarCraft 3 / Области и триггеры... ещё юниты...

Похожие вопросы:

ответ
Хозяин Миров, боже
делаем дами ауру
потом всем у кого есть баф ауры даём бонусы скрытым спелбуком
когда баф исчезает убираем бонусы
ответ
Maniac_91, область это хэндл а значит утекает
максимального количества областей ограничивается количеством оперативной памяти (до 2 гигов вроде) и максимальным количеством хэндлов (2 в 32 степени)
больше ни чем
EnergyFrost:
Максимум что тебя ожидает- лаги, которые ты получишь из-за утечек, работая с этими областями. Так что старайся не наплодить утечек и все будет окей.
как правило работа со статичными областями не вызывает утечек (если их не копировать)
ограничений на декорации тоже нету к слову (если не юзать устаревший редактор)
ответ
Утечка - это когда не удаляются ненужные объекты. Здесь регион нельзя удалять, потому что без него событие не будет работать. Но если у вас много таких событий, то лучше использовать один регион для всех событий, при условии, что размеры региона не будут изменяться в процессе игры, потому что это может нарушить работу других событий, привязанных к данному региону.
А функция TriggerRegisterEnterRectSimple в теории не утечна, но на практике может утекать, например, если в потоке триггера будет вызвано её уничтожение RemoveRegion(GetTriggeringRegion()).

23

» WarCraft 3 / Что то пошло не так

Похожие вопросы:

ответ
А приказ остановиться не пробовали?
ответ
во первых
код после ретурна не выполняется и 2 ретурна писать нельзя
во вторых
ты статьи вообще читал?
в самых начальных статьях по джасс сказано что так писать нельзя
это сказано в самых начальных статьях про локальные переменные
в третьих это не стол заказов
ответ
короче, вот рабочий вариант
смотреть сюда
function Trig_HeroArcheressSkillAFirst_Conditions takes nothing returns boolean
    return GetSpellAbilityId() == 'ASkA'
endfunction

function HeroArcheressSkillAFirst_SelectGroup takes nothing returns nothing
    if GetUnitAbilityLevel(GetEnumUnit(), 'B006') > 0 then
        call PauseUnit(GetEnumUnit(), true)
        call GroupAddUnit(HeroArcheressSkillAGroup, GetEnumUnit())
        call BJDebugMsg("Стан")
    endif
endfunction

function Trig_HeroArcheressSkillAFirst_Actions takes nothing returns nothing
    local group g = CreateGroup()
    
    set HeroArcheressSkillADammi = CreateUnit(GetOwningPlayer(GetTriggerUnit()), 'h003', GetSpellTargetX(), GetSpellTargetY(), bj_UNIT_FACING) //создаем дамми
    call UnitApplyTimedLife(HeroArcheressSkillADammi, 'BTLF', GetUnitAbilityLevel(GetTriggerUnit(), 'ASkA')) //таймер жизни для дамми
    
    call TriggerSleepAction (1.) //из-за ауры увеличил задержку
    //убрал утечки
    call GroupEnumUnitsInRange(g, GetSpellTargetX(), GetSpellTargetY(), 500.00, null)
    call ForGroup(g , function HeroArcheressSkillAFirst_SelectGroup )
    call DestroyGroup(g)
    set g = null
    //
    call TimerStart (HeroArcheressSkillATimer, 1., true, null) //запускаем таймер
endfunction

//===========================================================================
function InitTrig_HeroArcheressSkillABase takes nothing returns nothing
    set gg_trg_HeroArcheressSkillABase = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_HeroArcheressSkillABase, EVENT_PLAYER_UNIT_SPELL_EFFECT )
    call TriggerAddCondition( gg_trg_HeroArcheressSkillABase, Condition( function Trig_HeroArcheressSkillAFirst_Conditions ) )
    call TriggerAddAction( gg_trg_HeroArcheressSkillABase, function Trig_HeroArcheressSkillAFirst_Actions )
endfunction
globals
    integer HeroArcheressSkillACircle = 0
    timer HeroArcheressSkillATimer = CreateTimer() //таймер
endglobals

function HeroArcheressSkillAFirst_Damage takes nothing returns nothing
    if GetWidgetLife(HeroArcheressSkillADammi) > 0 then //проверяем, жив ли дамми юнит
        call BJDebugMsg("Урон" )
        call UnitDamageTarget(udg_HeroArcheress, GetEnumUnit(), 50, true, false, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL, WEAPON_TYPE_WHOKNOWS)
    else //иначе удаляем его из группы и снимаем паузу
        call PauseUnit(GetEnumUnit(), false)//PauseUnitBJ( false , GetEnumUnit() )
        call GroupRemoveUnit(HeroArcheressSkillAGroup, GetEnumUnit())
        call BJDebugMsg("Выход")
    endif
endfunction

function HeroArcheressSkillAFirst_Actions takes nothing returns nothing
    call ForGroup(HeroArcheressSkillAGroup, function HeroArcheressSkillAFirst_Damage)
endfunction

//===========================================================================
function InitTrig_HeroArcheressSkillAFirst takes nothing returns nothing
    set gg_trg_HeroArcheressSkillAFirst = CreateTrigger(  )
    call TriggerRegisterTimerExpireEvent(gg_trg_HeroArcheressSkillAFirst, HeroArcheressSkillATimer) //событие таймер истекает
    call TriggerAddAction( gg_trg_HeroArcheressSkillAFirst, function HeroArcheressSkillAFirst_Actions )
endfunction

23

» WarCraft 3 / Как выбросить предмет?

Похожие вопросы:

ответ
Опиши что ты хочешь сделать.
ответ
Дать предмету кастом вэлье по номеру игрока при подбирании, если не задано. И проверять при подбирании. Следующая проверка: если кастомное число предмета не равно номеру игрока, то выкидываем.
ответ
событие - герой теряет предмет
условие - предмет которым манипулируют типа (такой т предмет)
действие - виу виу, пж пж.
ответ
еще можно дать нужным юнитам абилку без иконки (например предметную +0 атаки) и проверять что она у них есть
ответ
Вот, слегка модифицировал твой вариант. Лучше, найти какую-нибудь готовую систему, ибо предметы всегда будут перемещаться, да и с полным инвентарем не корректно работает.

23

» WarCraft 3 / Инвентарь

Похожие вопросы:

ответ
Steal nerves:
ответы
Как объединить зелья лечения в одно с зарядом, если герой имеет одно в инвентаре и поднимает второе?
обычно используют "событие - юнит получает предмет", И на предмет, который вы получаете, ссылается переменная, которая называется item being manipulated. А юнит, который получает итем - Triggering Unit. Вы можете с помощью этой переменной итема узнать тип, сравнить. Потом циклом пробегаете по слотам (от 1 до 6), тут вся суть в одной команде триггерной (item in slot X, итем в слоте Х) и проверяете есть ли такой же итем (не забываем делать проверки, на то что этот предмет не равен item being manipulated и сравниваете не одинаковые ли типы). Если есть такой же (находите тот же тип что и item being manipulated), то от item being manipulated берете заряды и прибавляете к зарядам существующего, а потом item being manipulated удаляете. Недостаток: при заполненном инвентаре такая штука не будет работать.Не хватает свободного места.
код
цикл А от 1 до 6
if тип итема (item being manipulated) РАВНО тип итема (item in slot А) and item being manipulated НЕ РАВНО item in slot А then проверяете
set k = Charges remaining in ( item being manipulated) + Charges remaining in ( item in slot А) складываете заряды
Set charges remaining in ( item in slot А) to ( k) устанавливаете кол-во зарядов
Remove Item (item being manipulated) удаляете
endif
Есть гуишная проверка на наличие итема определенного типа в инвентаре, но она утечна. И лучше циклом прогонять.
Кстати выше пример, там вот дропают итем, зачем? чтобы проверить есть ли такой же итем. А то мб проверка на наличие итема определенного типа в инвентаре найти подобранный итем. А нам нужно знать, что есть еще один, кроме подобранного. Поэтому дропают. Только не понятно зачем создаете новый итем.
Проверка, на то что подобранный предмет имеет зарядов больше 0, говорит нам о том что это не обычный предмет.
есть статьи
Как зелье с зарядом разделить, если игрок перекладывает зелье с зарядом в другую ячейку инвентаря, если возможно, то разделение происходить должно только при нажатии какой-то клавиши?
можно перекладывать в другой слот. для этого ловят приказ. Короче смотрите системы CCS
там создают новый такой же предмет, и выделяют кол-во зарядов, деля поровну например. Абилкой например, попробуй сделать целевую активную абилку с целью предмет, указывай на инвентарь и дели.
Как это можно сделать покороче для множества разных типов предметов?
всмысле покороче? сделать под одну группу? есть же классификация. Я вот делаю так, что все предметы, которые с зарядами, должны иметь классификацию "с зарядами". Не помню точно как называется класс итемов.
Как правильно реализовать в инвентаре 7 слот?
если у героя заполнен инвентарь, то он может подобрать руну. Вот в доте система скрещивания. То же самое можно сделать и с зарядами. На земле у него лежат руны, при подборе руна исчезает. Но мы проверяем слоты, есть ли такой итем. Если есть, прибавляем заряды к существующему. Иначе создать новый. При дропе итема, оригинал подменяет снова на руну. В руну можно передать значения зарядов.
А также ограничения какие-то на количество зарядов нужно ставить или сама система выше какой-то планки не даст собирать?
до такого не доходил.
скинул примеры (хотя многие дурацкие, но делал здесь хгм в качестве ответов)
вот еще одна система hh
ответ
avuremybe, с буфером игры (кэш) можно работать так же как с хэш таблицей
FrigatPlay, в буфер игры можно сохранять не только юнитов но и предметы
просто перебираем циклом все предметы и сохраняем в кэш
а потом в следующей карте извлекаем их из кэша
ответ
Alexey103, а зачем менять уровень?
просто создал на основе стандартной и заметил у всех героев стандартную на созданную
у меня всё сработало
судя по всему инвентарь носильщика это просто обёртка над стандартным инвентарём
т.е. он содержит в себе стандартную способность "Предметы (Герой)"
и при проверки на уровень стандартной "Предметы (Герой)" выдаёт что она есть т.к. она содержится в носильщике
но если проверять на уровень нестандартной "Предметы (Герой)" то выдаст что её нету
я добавил карту пример
если приказать подобрать предмет герою который владеет способностью hero inventory (нестандартная способность на основе "Предметы (Герой)") то напишет hero
иначе unit
ответ
А если кратко, то перебирай при поднятии предмета все слоты инвентаря. Если уже есть такой предмет - делай что-то с лишней копией. Уничтожай, роняй с грозной надписью и так далее. Все это прекрасно и спокойно реализуется на гуи. Это если тебе именно одинаковые предметы не нравятся. С классами вещей там больше заморочек.

23

» WarCraft 3 / Сброс кд

Похожие вопросы:

ответ
вроде как кулдаун не запускается, если в момент применения способности юнита переместить триггером в какое-нибудь другое место (например, на несколько точек вправо)

23

» WarCraft 3 / Проблема с триггером.

Похожие вопросы:

ответ
  1. а) Создай 2 переменные-массива по типу "боевая единица" (массив - чтобы для каждого игрока, мы ведь за мультиплеер трем, прально?), назови типа MyChampion и MyChampionDummy.
    б) подготовь невидимого героя-пустышку с нужной тебе иконкой, убери ману, если у чемпиона ее нет. Убери ему радиус обзора, убери галочки типа "отмечать на мини-карте" - остальные - опционально.
    В дальнейшем мы будем синхронизировать пустышку и реального чемпиона, создавая видимость одной боевой единицы.
    Итак, наш первый триггер:
в) Отследи первое появление чемпиона, когда это случится - создай для игрока героя-пустышку. Соответственно сделай MyChampion [number of (Owner of trained unit)]= last trained unit, следующей строчкой создай того самого героя-пустышку для (owner of trained unit) и сделай MyChampionDummy = last created unit. Теперь мы прочно связали этих чуваков. Этот же триггер запускает остальные.
г) Отслеживание здоровья. Сделай изначально выключенный цикличный триггер, там, каждые 0.3 секунды. Триггер запускается пунктом в). Каждые 0.3 секунды меняй здоровье героя (чья икона висит, надо чтобы она соответствовала, прально?) в % на здоровье самого чемпиона.
д) пропищи событие, мол, если выбирает игрок своего героя (кликая на иконку) выбирается чемпион
е) убивай героя вместе с чемпионом
ж) отключай триггеры с проверкой и выбором, пока чемпион мертв
з) не забывай обновлять переменную чемпиона с каждым новым чемпионом.
ответ
Держи. Чтобы проверить нажми ESC в игре.
раскрыть
потребовалось полторы минуты
ответ
старый запрос
ответ
Проблема решилась, после соединения с администратором карта заработала и сохранилась. И на следующей карте соединения уже нет. Спасибо.
ответ
Попробуй конвертировать через war3 image extracror, а в фш сохрани картинку как 32 битную. Ну и разумеется разрешение 512х512
Когда будешь вставлять в карту, закинь картинку в мапу , а еще тебе понадобится LoadScreen.mds. В свойствах карты на загрузочный экран установишь LoadScreen.mdx, ну это я так, на всякий случай. Саму картинку нужно назвать FullScreen.blp

23

» WarCraft 3 / Миникарта

Похожие вопросы:

ответ
ответ
Ладно, поставил разрешение в Варке на максимум, более или менее нормальный масштаб миникарт получается, всем спасибо за попытки помочь.
ответ
Импортируй черную текстуру с путём "war3mapMap.blp".
ответ
  1. файл миникарты есть картинка, которую можно подгрузить в карту
  1. есть нативки для регулировки границ камеры, они же вроде и миникарту уменьшают
  1. это галка в настройках карты самой

23

» WarCraft 3 / Жанр карты

Похожие вопросы:

ответ
Ни разу не делал карты "чисто стандартного жанра". Т.е. общий жанр определить можно всегда, но нужно чтобы можно было выделить что-то, чем твоя карта реально отличается от себе подобных.
Вот, глянь чуть (щас набегут хомячки с возгласами ОЛОЛО РЕКЛАМА ДОК БЛИН КАК НЕ СТЫДНА)
ответ
Немного добавлю..
Tag (Tag Map) - Особенный жанр карт, в котором существует две команды - убегающие и догоняющие. Убегающие должны бежать от догоняющих, при этом они могут строить защитные базы, чтобы избежать поимки. Если убегающие выживут на протяжении заданного времени, то они выигрывают. Если догоняющие убивают всех убегающих до истечения времени, побеждают они. Выбывшие убегающие обычно помечаются как флаги или чёрные энты и воскрешаются, если они были атакованы или один из других убегающих достиг центра карты.
Примеры карт: Петросянщина, Вампиризм, Маньяк с пилой
Mini-Game - Жанр, включающий в себя карты обычно маленьких размеров и узконаправленные. Есть сборники мини-игр, которые включают в себя сразу несколько маленьких игрушек различного жанра. По своему устройству обычно несложные.
Примеры карт: Worm War, Death Sheep, Azeroth Grand Prix
Simulator - Не особо распространённый жанр карт, который содержит детализированное управление какой-либо аспектом карты. Его порой нетрудно спутать с RPG, но есть свои отличия.
Примеры карт: Ashenvale Archers, Fantasy Life, Jungle Trolls Reborn
Cinematic - Постановочные ролики, видео. Может даже и мини-фильмы.
Примеры карт: DDay:Judgement the Movie, matso TROY
Hero Arena - игроки выбирают по одному герою и помещаются на арену. Цель в отличие от AOS исключительно в убийстве героев вражеских игроков, а не уничтожении Базы врага.
Примеры карт: Angel arena
Сastle defense - игроки должны защищать определенное здание в течение определенного времени или количества волн монстров.
Примеры карт: X Hero Siege, Castle Fight, Lotr Lord of the Rings Castle Wars
Можно также делить общие жанры на категории: например:
  • Melee - ladder/custom;
  • Tower defense - Cooperative/ Survival/Tower wars$
ответ
Нестандартная арена.
ответ
Зачем вообще что-то делать, если в этих жанрах уже и так миллион карт?

23

» WarCraft 3 / Видимая невидимость

Похожие вопросы:

ответ
Blacksmith0410:
также не забудь удалять способность у умерших в стоге. выбери ответ и закрой вопрос =)
ответ
изменять триггерно границы камеры
подробнее в статьях и функшионлисте
кнопка статьи вверху
ответ
держи
ответ
avuremybe, сокрытие неможет быть локальным, будет десинх.
Сделай карту просто разведенной, карту будет видно а юнитов нет.

23

» WarCraft 3 / Опыт за задание

Похожие вопросы:

ответ
Поставь jngp с cjass и у cjass будет галка автообнуление. Иначе да, руками
xgm.guru/p/wc3/w3datatypes вот тут исчерпывающая инфа об утечках с переменных

23

» WarCraft 3 / Удалилась кампания

Похожие вопросы:

ответ
Почему по одиночке, можно же сразу всей пачкой? С тем но что пути не сохранятся.
И импортируются они так же пачкой. Выдели отдельную папку и всё.
ответ
Поищи у китайцев, у них много чего можно найти, но от их скорости проще застрелится
ответ
~8gabriel8:
mishanka122:
Если во всех картах одинаковый id, значит покопайся в хеше.
Это как, можно в личку?
Проблему решил, переделав стандартную способность, а не создавая нестандартную. Это почти что панацея от подобных случаев, когда id (ещё называют raw-code) способности меняется.
ответ
Даже если в редакторе создать молоток без бафов, и использовать его в AbilityDefinition('новый молоток', 'молоток из редактора'), то при очистке бафов, стан всё равно есть, но без эффекта.
К сожалению да, бафф это по большей части просто визуал в статусе героя. На механику мало влияет.
Не получается через UnitDefinition() сделать копию Сильваны 'Hvwd'(Хуманы, компания),
Вроде никаких проблем
Код
package Hello
import NoWurst
import UnitObjEditing
import Unit

@compiletime function createSilvanas()
	new UnitDefinition('NSlv', 'Hvwd')
	..setName("Двурукий Стреломёт")

init
	createUnit(Player(0), 'NSlv', vec2(0, 0), angle(0))
Результат
Разница между UnitDefinition и HeroDefinition в отсутствии в первой полей из второго.
Проверь, может в файле wurst_run.args, что в папке проекта, отсутствуют строки
-runcompiletimefunctions
-injectobjects
Или забыл аннотацию compiletime перед объявлением функции, в которой генерируется юнит.

23

» WarCraft 3 / Предмет проклятие

Похожие вопросы:

ответ
Я тебя понял, я пытался, всё тщетно. Придется создавать способность пустышку, например, на основе смертельного удара, а затем триггерно при изучении смертельного удара добавлять твою, невидимую.
ответ
Джин, как тебе уже ответили выше, данная способность не отображается на панели (спасибо близард), как и ряд других (камень жизни, амулет маны и т.д. и т.п.)
Показать ее наличие можно только одним способом - созданием способности-пустышки (для таких целей идеально подойдет лунный чакрум/крит с 0 шансом и 0 увеличением урона).
Оптимальный вариант - способность пустышку добавить в РО твоему юниту, а при инициализации карты тригерно добавить уже нужную (в нашем случае способность проклятия).
ответ
тут может быть только триггерный вариант
Да. Через дамми-юнита.
ответ
На понижение урона - способность предмета "Когти атаки" (любого, дающего бонус к атаке) с отрицательным значением.
Способность, увеличивающая получаемый урон - "Берсерк" у орков.
ответ
Ghostly, если способности не стакаются, можно попробовать вместо предметов со способностями использовать пустышки, а способности от них запихнуть в скрытый спеллбук и увеличить количество уровней. При подборе/выбрасывании делать проверку на наличие предметов и заносить в переменную. Например, те же ботинки +5, перчатки +10 - в сумме 15. Значит, скрытой способности нужно установить уровень 15.
Но это в теории. Я не пробовал такое.
У спеллбука есть несколько неприятных особенностей вроде сбрасывания уровня способностей при загрузке сохранённой игры, но можно делать проверку во время этой загрузки.

23

» WarCraft 3 / Название функции

Похожие вопросы:

ответ
Sync функции нужны для синхроеизации локальных данных через кеш.
ответ
а хотя стоп
у players_count нету начального значения
вместо
local integer players_count
local integer half_players
надо
local integer players_count = 0
local integer half_players = 0
ответ
Разумеется нет, база данных в помощь...
ответ
XGM Bot:
Похожие вопросы:

ответ
вопервых ты в 1 и ту же ячейку пытаешся записать 2 значения (location и integer)
во вторых ты создаёш область по кординатам а следующей строчкой находиш эти же кординаты с помощью функций
в 3 ты сохранял точку в хэш и сразу же удалял её
и в 4 ты не инициализировал хэш
function Trig_SlayerUlt_Conditions takes nothing returns boolean
return GetSpellAbilityId() == 'A00V'
endfunction
function Ultaction takes nothing returns nothing
local timer st = GetExpiredTimer()
local integer sid = GetHandleId(st)
local unit su = LoadUnitHandle (udg_Hash, sid, 0)
if IsUnitType(GetEnumUnit(), UNIT_TYPE_STRUCTURE) == false and IsUnitEnemy( GetEnumUnit(), GetOwningPlayer(su)) == true then
call UnitDamageTargetBJ( su, GetEnumUnit(), 210.00, ATTACK_TYPE_NORMAL, DAMAGE_TYPE_NORMAL )
endif
set su = null
endfunction
function UltimateRun takes nothing returns nothing
local timer st = GetExpiredTimer()
local integer sid = GetHandleId(st)
local unit su = LoadUnitHandle (udg_Hash, sid, 0)
local integer suid = GetHandleId(su)
local location suloc = LoadLocationHandle(udg_Hash, sid, 1)
local effect sueff = LoadEffectHandle (udg_Hash, sid, 2)
local real x = GetLocationX( suloc )
local real y = GetLocationY( suloc )
local rect surect = Rect( x - 600.00*0.5, y - 600.00*0.5, x + 600.00*0.5, y + 600.00*0.5 )
local location random = Location (GetRandomReal(x-600*.5,x+600*.5), GetRandomReal (y-600*.5, y+600*.5))
local integer sc = LoadInteger (udg_Hash, sid, 10)
call SetUnitPositionLoc( su, random )
call SetUnitAnimation( su, "attack" )
call AddSpecialEffectLocBJ( random, "Abilities\\Spells\\Human\\Thunderclap \\ThunderClapCaster.mdl" )
call DestroyEffectBJ ( GetLastCreatedEffectBJ() )
call AddSpecialEffectLocBJ( random, "Abilities\\Spells\\Items\\AIil\\AIilTarget.mdl" )
call DestroyEffectBJ ( GetLastCreatedEffectBJ() )
call ForGroupBJ ( GetUnitsInRangeOfLocAll(250.00, suloc), function Ultaction )
set bj_wantDestroyGroup=true
call SaveInteger(udg_Hash,sid,10,sc + 1)
if sc >= 10 then
call SetUnitPositionLoc( su, suloc )
call DestroyEffectBJ( sueff )
call SetUnitPathing( su, true )
call SetUnitInvulnerable( su, false )
call PauseUnitBJ( false, su )
call SetUnitVertexColorBJ( su, 100, 100, 100, 0.00 )
call PauseTimer(st)
call DestroyTimer(st)
call FlushChildHashtable(udg_Hash, sid)
endif
set suloc = null
set random = null
set st = null
set su = null
set sueff = null
endfunction
function Trig_SlayerUlt_Actions takes nothing returns nothing
local timer st = CreateTimer()
local integer sid = GetHandleId(st)
local unit su = GetTriggerUnit()
local integer suid = GetHandleId(su)
local location suloc = GetUnitLoc(su)
local effect sueff
local real x=GetUnitX(su)
local real y=GetUnitY(su)
call AddSpecialEffectTargetUnitBJ ( "hand right", su, "Abilities\\Weapons \\PhoenixMissile\\Phoenix_Missile.mdl" )
set sueff = GetLastCreatedEffectBJ()
call SetUnitPathing( su, false )
call SetUnitInvulnerable( su, true )
call PauseUnitBJ( true, su )
call SetUnitVertexColorBJ( su, 100, 100, 100, 50.00 )
call SaveUnitHandle(udg_Hash, sid, 0, su)
call SaveAgentHandle(udg_Hash, sid, 1, suloc)
call SaveAgentHandle(udg_Hash, sid, 2, sueff)
call SaveAgentHandle(udg_Hash, suid, 0, st)
call SaveInteger (udg_Hash, sid, 10, 1)
call TimerStart( st, .3, true, function UltimateRun )
set suloc = null
set st = null
set su = null
set sueff = null
endfunction
===========================================================================
function InitTrig_SlayerUlt takes nothing returns nothing
set gg_trg_SlayerUlt = CreateTrigger ( )
set udg_Hash=InitHashtable()
call TriggerRegisterAnyUnitEventBJ ( gg_trg_SlayerUlt, EVENT_PLAYER_UNIT_SPELL_CAST )
call TriggerAddCondition ( gg_trg_SlayerUlt, Condition( function Trig_SlayerUlt_Conditions ) )
call TriggerAddAction ( gg_trg_SlayerUlt, function Trig_SlayerUlt_Actions )
endfunction
ответ
Steal nerves:
filterGetUnitsOfTypeIdAll - фильтр, вместо него должно быть написано либо null или Condition( function XXX) Короче зачем нужен фильтр? Фильтр при выборе всех юнитов сразу отсеивает не нужных, если по условию не подходит, то выкидывает.. Вам сразу достается готовая группа с нужными юнитами
А в качестве переменных используй GetFilterUnit, GetFilterPlayer. На гуи по-другому называют MatchingUnit
где XXX - название функции, эта функция возвращает boolean (то есть истину или ложь)
вбей в поиск названии функции, может найдешь ответ
например выделяем все здания UNIT_TYPE_STRUCTURE, а те, кто не является зданием отсеиваем
function XXX takes nothing returns boolean
    return IsUnitType(GetFilterUnit(), UNIT_TYPE_STRUCTURE)
endfunction
насчет статьи не видел, это придет с пониманием. Главное начать. Сначала тупо конверт, и оптимизация. А дальше можешь сам
что у тебя там не работает скидывай сюда

ответ
скачай этот файл и закинь его в папку AdicHelper\lib\ в папке с jngp
после в шапке карты напиши include "ifdebug.j"
и создай триггер с событием
игрок написал в чат ifdebug как точное совпадение
действие
кастом скрипт log()
после чего запусти карту и напиши в чат ifdebug
он выведет на экран все if/else/elseif через которые он прошёл (true в скобках в конце строки означает что значение в ифе истина)

23

» WarCraft 3 / Призванные существа

Похожие вопросы:

ответ
...кстати о которой, кто-нибудь таки хочет мне помочь с разработкой? Или я уж тему прикрою?
ответ
Будет, вызванные существа имеют полоску длительности которая является баффом, если его удалить то юнит умрет, так же этот самый бафф делает юнита вызванным.
Если хочется чтобы навсегда создавался, триггерно создавайте юнита поблизости и делайте с ним что хотите.
ответ
antonpoganui, создавай цикл для отряда и добавляй необходимые действия для иллюзий.
ответ
Steal nerves:
Summon-абилки
Вызывают существ (можно отловить через событие - "юнит призывает боевую единицу" или через событие "юнит вошел в зону" с проверкой баффа, либо классификации "иллюзия" или "вызванный" и прочее):

ПРИЗЫВ: безграничное число вызванных (вызванные юниты не умирают, если кастер умрет)

Дух воды 'AHwe' - вызывает духов воды (можно указать кол-во вызванных). Появляется рядом с кастером.
Дух Океана 'ACwe' - вызывает духов океана (можно указать кол-во вызванных). Появляется рядом с кастером.
Разведка 'AEst' - вызывает сову-разведчицу (можно указать кол-во вызванных). Появляется рядом с кастером.
Возмездие 'AEsv' - вызывает душу возмездия (можно указать кол-во вызванных). Появляется рядом с кастером.
Феникс 'AHpx' - вызывает феникса (можно указать кол-во вызванных). Появляется рядом с кастером. Больше одного феникса нельзя призвать, заменяется новым. Дело не в вызываемой абилке (скорее всего в самом фениксе), так как пробовал поменять на другого типа юнита, и тут безграничное число юнитов вызывает.
Медведь 'ANsg' - вызывает медведя (можно указать кол-во вызванных). Появляется рядом с кастером.
Кабан 'ANsq'/'Arsq' - вызывает кабана (можно указать кол-во вызванных). Появляется рядом с кастером.
Щупальце 'ACtn' - вызывает щупальце (можно указать кол-во вызванных). Появляется рядом с кастером.
Призыв слуг 'Aslp'/'ANwm' - вызывает морских существ, готовых прислуживаться (можно указать кол-во вызванных). Появляется рядом с кастером.
Сокол 'ANsw' - призывает сокола (можно указать кол-во вызванных). Появляется рядом с кастером.
Заводной зверь 'Amec' - вызывает нейтральную зверушку (здесь не указано ничего, и нельзя указать какой тип призывается. Всегда рандомно вызывает зверушку: это может быть кроликом, лягушкой, енотом, цыпленком, свиньей, овца (часто выпадают именно эти зверьки, возможно есть другие, но это не попадались мне). Вшито в игре где-то). Зато можно указать количество вызываемых зверей. Эта абилка вставлена в одноразовый предмет. Вызывает навсегда (длительность задано на "ноль", но можно задать время действия вызова). Вызывает безграничное число юнитов. Это не совсем нейтральное существо, оно может подчиняться вашим указаниям (у нее есть, конечно, бродилка. чтоб не стояло на месте). Это существо больше создано для разведки, вы можете создать неподалеку от базы противника и заслать на базу. Враги не трогают нейтралов. В чем суть этой абилки? Если создать изначально цыпленка на карте, и заслать на базу врага, этого цыпленка тут же заметят как врага, и сразу же прирежут. А если вызвать через эту способность, то враг игнорит вашу зверушку (в некоторых играх против ботов надо попробовать сделать препятствие - если узкие проходы просто загородить цыплятами, то возможно пройти будет сложно). Единственное, что настоящий игрок может заподозрить и убить.
Тварь из Недр 'ANlm' - вызывает лавовых духов огня, обитающих в магме (можно указать кол-во вызванных). Появляется рядом с кастером. Эта абилка отличается от других, поскольку она особенная. Описание: "Нанося урон жертве, она забирает часть жизненной силы. Накопив достаточно жизненной силы, она порождает вторую такую тварь" (при чем это не отслеживается событием "юнит призывает боевую единицу", отслеживает только призыв первой твари, а вот деление нет, деление отслеживается только событием "юнит входит в область"). Короче делится на две твари. Хотя по сути она не похищает жизнь, в абилке настройки ловят на количество ударов, после которого юнит делением вызывает
Характеристики:
"Данные - Деление: количество атак" - кол-во ударов, после которого тварь начнет делиться на себе подобных. Можно сразу проверить, поставив 1.
"Данные - Деление: доп. срок жизни" - таймер жизни. Это значение при делении продлевает время жизни существу, которое вызвало деление, и столько же добавляет вызванному существу.
"Данные - фактор здоровья" - процент здоровья от макс. запаса. Если первый юнит будет покосан (ранен), то при делений второй юнит имеет точно такое же здоровье. Однако, поле "фактор здоровья" пополняем первому и второму юниту часть здоровья. В этом поле стоит 0.5, значит половина от запаса пополняет обоим. (0.00 - ничего не даст, а при отрицательном значений юниты умирают)
"Данные - Задержка деления" - задержка перед тем как поделится на две части. Тварь начинает трясти, а потом делится на две части.
"Данные - количество поколений" - кастер вызвает одну тварь, назовем ее основной. Кастер повторно основных юнитов может безгранично множество вызвать. А основной юнит может вызвать делением других таких же побочных (назову их так, они ни чем не отличаются от основного. Начиная с 4 поколения, у них меняется изображение: с духа на огонька, а в остальном характеристики те же). Число поколение так понял, это сколько раз может расколоться. Например, кол-во поколений = 3, основной юнит - первое поколение, делится на два, теперь эти два юнита - второе поколение, делятся, становится 4 юнита, эти 4 юнита - третье поколение (и больше делиться не могут). Мне неизвестно точно, делится ли юнит на двух новых, или просто вызвает (почкованием размножается), больше похоже, что второе. ставил кол-во поколений 5, и поделило так много юнитов, стало всего 16. Ставил кол-во поколений 6, стало 32.
ФОРМУЛА геометрической прогрессий - макс. кол-во юнитов:
q = 2 (мы знаем, что с каждым шагом их становится в два раза больше)
b1 = 1 (сколько вначале вызываем)
bn = b1 * q ^ n-1 - формула
b5 = b1 * q ^ 5-1 = 1 * 2 ^ 4 = 16
b6 = b1 * q ^ 6-1 = 1 * 2 ^ 6 = 32
Как писал, основных может вызвать много, а значит, и с ними будет также множество побочных при делений (как видим кол-во поколений не влияет на всех, только на определенную группу).

ПРИЗЫВ: Призвать больше чем указано не может, заменяется новым. Здесь тоже не умирают, если кастер сдох

Дух волка 'AOsf'/'ACsf'/'ACs7' - вызывает духов волков. (можно указать кол-во вызванных). Появляется рядом с кастером.
Дух вепря 'ACs9' - вызывает вепря (можно указать кол-во вызванных). Появляется рядом с кастером.
Медведь (Рексар) 'Arsg' - вызывает медведя (можно указать кол-во вызванных). Появляется рядом с кастером.
Астральный зверь 'ACs8' - вызывает адских охотников (можно указать кол-во вызванных). Появляется рядом с кастером.
Охотник за головами (предмет) 'AIsh' - вызывает берсерков (можно указать кол-во вызванных). Появляется рядом с кастером.
Призыв слуг (предмет) 'AIwm' - призывает морлоков (можно указать кол-во вызванных). Появляется рядом с кастером.

ПРИЗЫВ: Предметные (здесь вы можете призвать два разных типа войск в отличий от других призывов. Эта абилки предметов одинаковы, даже приказы одинаковы. Могут вызвать бесконечное число юнитов, то есть не заменяются новыми):

Предмет: Вызов Адской гончей 'AIfh'
Предмет: Вызов Привратника Ада 'AIfu'
Предмет: Вызов Призрачного рыцаря 'AIir'
Предмет: Вызов беорна 'AIff'
Предмет: Вызов беорна-воителя 'AIuw'
Предмет: Вызов каменного голема 'AIfr'
Предмет: Вызов красного дракона 'AIfd'
Предмет: Вызов скелета 'AIfs'
Вроде как тоже не заметил уничтожения вызванного юнита после смерти героя

ПРИЗЫВ: установка вардов в точку

Невидимый страж 'Aeye' - вард духов с большим зеленым глазом, установленный на землю, наблюдает в течении длительного периода времени. Видит также невидимые войска. Устанавливается в указанную точку. Примечание: эта абилка наделяет призываемого юнита постоянной невидимостью. есть у варда скилл "Дух(видимый)" 'Aeth', который не делает невидимый, а просто наделяет указанный в характеристиках данными. Вызывает только одного.
Колдовская ловушка 'Asta' - вард-тотем. Эта способность создает вокруг юнита ловушку, которая обездвиживает (оглушает, stun) противников. Прицел, аналогично с духом-целителем, действует по области. Но этот радиус круг от прицела настраивается в самой абилке. Вызывает только одного. Примечание: эта абилка наделяет призываемого юнита невидимостью, правда не постоянная она, но можно настроить время захода в инвиз. Вот все настройки: Длительность оглушения - сколько продлится дебафф оглушения на обычных юнитах (не героях) прежде чем пройдет. Длительность воздействия (герой) - сколько продлится дебафф оглушения на герое. Длительность нормальная - время жизни призванного юнита. Задержка запуска - время после призыва и до того, как он станет невидимым. Радиус обнаружения - расстояние, на котором может быть обнаружен противник и начнет сработка ловушки. Радиус взрыва - область оглушения юнитов. Радиус оглушения у колдовской ловушки слишком маленький, поэтому не всегда кажется срабатывает (на самом деле, это работает на медленных юнитах или ловушки эффективны против милишников). Как только капкан захлопнется, тотем исчезает. Можете продлевать оглушение, чтобы юнит не сбежал, поджав хвост. Это нужно ставить новую ловушку, правда, зависит это еще и от наличия маны, и кулдауна абилки. Ловушка не срабатывает на невидимых юнитов. Можно указать юниту с напару с этой абилки "Урон от взрыва", "Урон от взрыва" срабатывает после смерти носителя, она наносит всем урона. Так как колдовская ловушка не наносит никакого урона, а лишь оглушает, то это хорошо взаимодействуется.
Дух-целитель (знахарь) 'Ahwd'/'AChw'/'AIhw' - вард духов, который устанавливается на землю знахарем. Лечит всех вокруг. Этот вызов устанавливается в указанную точку (кстати, мне так и не удалось убрать круг прицела (причем красочный у орков), или хотя бы изменить радиус круга от прицела, но это легко обойти. Канал + триггеры с dummy-кастом в точку). Вызывает только одного.
Сторожевая змея 'AOsw'/'Arsw' - вызов призрачной змеи, которая атакует любого рядышком противника. Устанавливается в указанную точку. (можно указать кол-во вызванных)
Руна стража 'APwt' - призывает неуязвимого варда-духа, наблюдающего за местностью. Этот призыв делает юнита невидимым (как и у абилки "Невидимый страж").
Темные врата 'ANdp' - в указанную точку вызывает несколько существ. Кол-во вызываемых всегда рандомно (от минимального до максимального значения. в настройках абилки указаны минимальное и максимальное значение). Здесь также можно указать несколько типов существ, это как раз необычно. Типы существ тоже рандомно спавнятся. Например, вызываю 5 существ: это может быть 3 пехотинца и 2 стрелка, так может быть и по-другому 2 стрелка и 3 пехотинца, или 4 пехотинца и 1 стрелок и так далее.
Торнадо 'ANto' - в указанную точку призывается торнадо (призвать можно только одно торнадо). Пока кастер произносит заклинания (делает channeling-анимации), вы можете управлять торнадо. Но учтите, торнадо можно прервать, если кастер прекратит кастовать. Торнадо можно заставить двигаться в любую точку, оно дамажит всех вокруг (у нее аура дамага, аура понижения скоростей, и аура, которая подбрасывает вверх вихрем).

ПРИЗЫВ: разделение юнитов

Три Стихии 'ANef'/'Acef' - герой разделяется на три существа (сам герой пропадает). Герой превращается в трех воинов, наделенных силами Огня, Земли, Ветра. Призыв трех существ ловится событием "юнит призывает боевую единицу". Если хоть один из трех вызванных существ выживет, то герой возродится. Действие завершения заклинания (это когда суммоны исчезнут, а герой появится) ловится "Юнит прекращает/завершает действие заклинания". Даже, если один из выживший будет сильно ранен, герой возродится в полном запасе хп.

ПРИЗЫВ: призыв энтов из деревьев

Сила природы 'AEfn'/'ACfr' - вызывает энтов из деревьев в указанной области, деревья как бы вырубаются, типа ожили. Можно указать количество энтов. Правда, не всегда можно вызвать нужное количество, ведь зависит от количества деревьев в указанной области. Если в абилки указано, что можно призвать 2 энтов, но у вас в указанной области стоит одно дерево, то естественно вызовите одного. Также эта заклинание вырубает все деревья, и не важно сколько энтов указано (будь 1 энт, то сможет вс деревья вырубить). Иногда энты могут застрять в деревьях, это из-за того, что радиус указанной области маленький или целились в гущу деревьев, из-за чего не выйти.

превращение в зомби

Обращение во Тьму 'ANdc'/'SNdc' - сразу пробовал сам разобраться в тестовой карте, но не получается ни на кого нацелиться. Как бы цели не менял, настройки юнитов и цели абилки не ковырял. Но на самом деле все работает. Меня сбил кривой перевод поля. Поле "Конвентирует в расу" - здесь указана раса юнита, юнит которой может превратиться в зомби. По стандарту тут стоит "Все", я подумал, что это все расы, но на самом деле не так. В варике юниты поделены на расы, есть раса "Нежить", "Альянс" и др. Есть также раса "Все" - тоже раса нейтралов. Превращение ловится событием "Юнит призывает боевую единицу". Здесь превращенный юнит не призывается на вашу сторону, он как принадлежал другому игроку, так и принадлежит (но это можно подправить). Единственное, что превратил в другого.

ПРИЗЫВ: призыв при убийстве - ловится событием "юнит призывает боевую единицу"

Призыв не работает на тех, кого нельзя оживить (у юнитов в РО "тип смерти"), короче кто не оставляет трупы.
Гидра 'Aspy'/Молодая Гидра 'Aspt'/Пауки 'Aspd'/ 'Assp'/Скелет 'Asod' - не имеет иконки. при смерти юнита вызывает других юнитов (можно указать кол-во). Обычно вызывает более мелкую версию себя (например гигантская гидра призвала две маленькие гидры)
Паразит 'Acpa'/'ANpa' - внедряет личинку паразита в тело врага, наносит урон, и, если умрет, то вылупляется юнит-паразит (автоприменение работает даже у тех, у кого нет атаки). Можно помочь добить другими юнитами, необязательно, чтобы смерть наступало именно от заклинания. Имеет очень похожие поля с отравляющими абилками, триггер ловит классификацию "отравление". Только вот настройки буфера не работают, чуть что измени в буфере, и не будет работать (там остается без изменений "убить боевую единицу"), короче не получится накладывать эффекты отравления или замедления. В настройках можно настроить снижение скорости боя и передвижения. Дебафф на цели имеет определенное время существования, если развеится, то не получить из него паразита, так как юнит жив, не умер. Если все-таки удаться убить, то после смерти призывается нужный нам юнит-паразит (отслеживается призыва событием "юнит призывает боевую единицу"). Можно указать кол-во призываемых. Этот дебафф нельзя развеить рассеивающим заклинанием. Ежесекундный урон относится к типу атаки "заклинание", не понижается защитой, является магическим уроном
Черная стрела 'ANba'/'ACbk' - Orb, наносят дополнительный урон, вешая дебафф черной стрелы. Этот дебафф остается на противнике несколько секунд, повторная атака продлевает длительность дебаффа. Дебафф ловит смерть юнита (даже, если кто-то другой (не лучник) убьет), заклинание призывает скелетов. Ловится событием "юнит призывает боевую единицу". Может с первого выстрела призвать, если урона будет достаточно чтобы сваншотить (завалить с одного удара), и не нужно тогда никакого дебаффа. Этот дополнительный урон при атаке суммируется с нанесенным уроном героя, относится к типу атаки к тому, что указан в атаке. снижается физической защитой. Является физической атакой с физическим уроном. может использовать милишник. Призыв не работает на тех, кого нельзя оживить (у юнитов в РО "тип смерти"), короче кто не оставляет трупы.
Печать Преисподней 'ANdo' - на указанного юнита вешают дебафф "Печать Преисподней", который ежесекундно наносит урон цели. Самое забавное, что длительность дебаффа задано на ноль (что значит этот дебафф вечен, его нельзя развеять или рассеять. Придеться спокойно ждать смерти, а лучше его убить поскорее.) Этот дебафф еще ловит смерть юнита (не важно отчего умер от заклинания или от руки какого-нибудь вашего левого юнита), и призывает демона "Привратника ада". Это заклинание также запрещает использовать заклинания и предметы, изучать способности, нанимать войска в зданий и изучать исследования (иконки заклинаний, исследований, нанимаемых войск и геройская кнопка "изучить" становятся не активными, даже пассивки не работают (не активны), а предметы не удается выкинуть или использовать). Ежесекундный урон относится к типу атаки "Заклинание", не понижается защитой, является магическим уроном. Урон можно убрать, поставив ноль. И призыв после смерти тоже можно убрать (копируете поле "тип боевой единицы" у способности нежити "Ядовитое облако (Дух)", оно как раз пустое, и вставляете в поле печать преисподней, тогда при смерти не будет появляться демон). Если обычный юнит (не герой) умирает, то он дропает итемы (хотя эт всегда работало). Является универсальным заклинанием, которое к тому же пробивает невосприимчивость к магий (натравить можно)

иллюзии

Иллюзия 'AOmi' - Создание иллюзорного двойника, сбивающего с толку противника. Все заклинания, наложенные на героя, при этом рассеиваются. Призыв двойника тоже считается как призыв. В характеристиках абилки можно настроить иллюзию (получал больше/меньше от противника или вообще ничего не получал от врага, также как и наносить урон врагу больше/меньше или вообще не наносит никакого урона. Одновременно с этим иллюзии теряют на панеле все активные скиллы, остаются только пассивки. В абилке можно настроить, так что вызванные илююзий не могли наносить урон (весь урон обнуляся). Но очень хорошо срабатывает обманка двойников. Например криты будут выдавать обманку, красные цифры будут всплывать, что нанесли урон, а скилл "иллюзия" по стандарту обнуляет нанесенный урон иллюзией. Есть и недостатки с морфом - он тебя выдает: если заранее создать иллюзорного двойника, а самому потом морфнуть в какого-нибудь другого юнита, то оригинал будет в другой форме, в то время как ваш двойник остается таким же. Чтобы иллюзию перевоплотить (морфнуть) используют способность "Превратиться в медведя" 'Abrf' - везде ставите 0.00 еще ставите нормальную форму, то есть ту, которую хотите перевоплотить. В триггерах этот морф сразу даем и тут же убираем. Сработает баг у иллюзии, и они перевоплотятся в другую форму. Сбивает приказ
Предмет: иллюзий 'AIil' - нужно выбрать дружественного юнита, по которому будет создана иллюзия. Призыв двойника тоже считается как призыв. В характеристиках абилки можно настроить иллюзию (получал больше/меньше от противника или вообще ничего не получал от врага, также как и наносить урон врагу больше/меньше или вообще не наносит никакого урона. Одновременно с этим иллюзии теряют на панеле все активные скиллы, остаются только пассивки. В абилке можно настроить, так что вызванные илююзий не могли наносить урон (весь урон обнуляся). Приказ = 852274, строкового приказа не существует.

воскрешение

Воскрешение 'AHre'/предметная: Младшая руна воскрешения 'APrl'/Предмет: Воскрешение 'AIrs'/'AIrx' (эта способность никого не вызывает, а только воскрешает. Но при воскрешении отслеживается призыв через событие). Воскрешает определенное кол-во юнитов (можно указать кол-во оживленных). Требует трупы.
Помощь предков 'Aast' - воскрешает одного ближайщего мертвого минотавра. Действует воскрешение на юнитов с классификацией "Минотавр". Любопытная инфа: воскрешают даже вражеских минотавров, и ожившие встают на вашу сторону (для этого нужно настроить цели абилки ).

гальванизация (что-то похожее на воскрешение)

Гальванизация 'AUan'/'ACad'/'AIhd'/Предмет: Гальванизация 'AIan' - оживляет из мертвых трупов определенное кол-во единиц (можно указать кол-во вызванных), делая их неуязвимыми. И сражаются на вашей стороне, и не важно на чьей стороне они воевали до этого. (могут наследовать улучшения, если до этого на них производил другой игрок улучшения. для этого нужно галочку поставить)

призыв с неба

Огненный голем 'AUin'/'ANin'/'SNin'/Огненный голем (предмет) 'AIin' - с неба в указанную область падает голем, который при падении наносит урона (указано в поле абилки "урон"), кроме того, в указанной области юниты оглушаются (stun) на неопределенное время. Урон от падения относится к типу атаки "Заклинание", не понижается защитой. Является магическим уроном. Можно сделать из этой абилки stun по области, но вместо голема нужно указать невидимого неуязвимого даймика (иначе stun не захочет работать). Кстати, в указанной области хорошо валит деревья, так сказать очищает место посадки
Огненный дождь (из големов) 'ANrc'/'ANr3' - с неба в указанную область в случайные точки обрушиваются несколько големов. В этой абилке стандартно указывают другую абилку 'ANin'. Так понял, эта абилка заставляет кастовать другую абилку несколько раз в случайные точки. Все настройки принимает побочной абилки: длительность существования големов, stun, урон, радиус поражения и оглушения. По стандарту скилл "огненный голем" 'ANin' в указанной области наносит дополнительный урон, оглушая всех (еще и валит деревья). Можно попробовать другие побочные абилки принять, правда большинство не хотят работать через это. Зато работают другие призывы, правда, оглушает остальных (тоже время оглушения указано в побочных). Откуда берет это оглушение, не понятно (если указал абилку "дух воды"). Жалко, что атакующие заклинания не работают. Проигрывает ли кастер channeling-анимацию - неизвестно, является ли это channeling-анимацией? Но призывает последовательно по одному голему, и пока всех не призовет, тогда не прекратить махать руками. значит можно прервать действие, тогда либо не всех големов призовет или вообще никого не успеет призвать.

ПРИЗЫВ: поднятие мертвецов - требует трупы

Оживить мертвых 'Arai'/'ACrd' (автокаст) - автокастовая способность, которая поднимает скелетов из мертвых трупов. требует трупы. Это способность позволяет оживить одновременно несколько видов (например. скелет + скелет-некромант, еще можно указать и их кол-во). Есть в абилке поле "тип войск для проверки" - тут указывается тип, что это поле значит, не знаю (работает без этого).
Оживить мертвых (предмет) 'AIrd' - эта похожая способность с автокастовой со всеми полями. Но задействована в предмете. Можно дать юниту. У него нет строкого приказа. Дебагом выявил числовой id-приказ 852624. Здесь не работает автокаст, точнее его нет - это же предмет.
Трупоеды 'AUcb' (автокаст) - вызывает жука-трупоеда. Работает при наличий трупа. Это способность позволяет оживить одновременно несколько видов (например. скелет + скелет-некромант + еще можно указать и их кол-во. В данный момент там указан один жук-трупоед, а второй тип не указан). Вызывает навсегда, типа длительность 0 стоит. Имеет лимит на вызванных. Есть галочка "Убить после смерти мага" - после смерти кастера вызванные могут умереть (у абилке стоит "нет", значит жукам повезло, не умрут). Тут все же самое, что в скилле "Оживить мертвых", отличие только в том, что убрано поле "тип войск для проверки", добавлено поля "Макс. вызванных юнитов" и "Убить после смерти мага".
Зов Возмездия 'Avng' (автокаст) - вызывает духов возмездия на месте трупа. для работы этого скила требует труп. Можно в настройках установить одновременно два разных типа, и определить их количество. Имеет лимит на вызванных. Абилка в точь-точь похожа на "трупоеды", разница лишь в том, что добавлено еще поле "тип войск для проверки", которое пустует и неизвестно что значит. Здесь вызванные духи существуют определенное время, могут погибнуть после смерти кастера. Галочка "Убить после смерти мага" - итак понятно, а вот как сделать чтобы выжили (см. пример трупоеды)? это работает на постоянных вызванных существ

особенные случаи:

Перерождение 'AOre'/'AOr3'/'ACm'/'ANr2'/'ANrn'
предмет: крест перерождения 'AIrc'
Воин, обладающий этой способностью, возрождается через несколько секунд после гибели. После гибели обычно крест на земле лежит, между смертью и воскрешением есть задержка. Недостаток этого способа в том, то нельзя отловить никаким событием:
проверял, но может быть не точным. Здесь не нашел как отследить.
  • ни "вызывает боевую единицу" (не ловит, хотя логично, мы же не вызываем юнита, а воскрешаем),
  • "юнит становится воскрешаемым" (не понятное событие, хотя склоняюсь к тому, что относится это к другой способности, например способности Артеса "Гальванизация"/ или "воскрешение" паладина),
  • "юнит начинает/прекращает/завершает воскрешение" (это относится к алтарю, когда юнит умирает, игрок заново воскрешает в алтаре),
  • "юнит начинает применять способность/приводит способность в действие/завершает применение способности" (попробовал, но увы нет),
  • "юнит входит в регион .../юнит выходит" (увы нет, обычно когда юнит умирает, он исчезает из карты. Но с этой абилкой остается в игре, крест и тень то тоже остаются),
  • "юнит умирает" (видимо, это не считается в игре смертью)
Воин, обладающий этой способностью, возрождается через несколько секунд после гибели.
В интернете (много чего искал) пишут, что перерождение ловится событием "unit life becomes < 0.0405". Тестировал, и само событие не работает. Можно только периодически проверять с помощью проверки "здоровье меньше 0.0405". Откуда взялось число 0.0405 мне неведомо, дебаг показывает, что у юнита во время реинкарнации 0.00 здоровья. Надежности как бы мало для того, чтобы верить тем (я про число 0.0405). Еще периодически можно проверять классификацией "Мертв (Dead)", "IsUnitType(GetTriggerUnit(), UNIT_TYPE_DEAD)", которая говорит что юнит мертв во время реинкарнации. Все это не работает, так как срабатывает и на обычной смерти (на юните без перерождении срабатывает это, короче ничего не дает это).
Еще одна особенность: вроде во время смерти с предметом "крест перерождения" срабатывает событие юнит "использует предмет"\"использует способность" прокатывают.
Но вот отследить момент, когда юнит умирает и воскрешается, так и не удается (только через костыли). Можно свою систему перерождения сделать.
Примечание: предметная способность от креста перерождения 'AIrc' невидима, даже, если ее дать герою. И эта способность при смерти не срабатывает, видимо связана с предметом. Предположение: чтобы заработала, надо сделать снова ее видимой.
Перерождение 'AIrb' - используется в руне подчинения. Воскрешает моба, из которого выпала эта руна в качестве лута. Лут указан в таблице предметов с выпадением шанса. Эта таблица связывает руну с мобом. При использований руны сможете призвать (воскресить) именно этого моба, который будет драться на вашей стороне.
-Если просто триггерно создать на карте, а потом подобрать и использовать. Не получится воскресить.
-Если переделать руну в обычный итем, и отдать мобу. А при убийстве подобрать и заюзать. Не получится воскресить.
-Если использовать Item pool. www.hiveworkshop.com/threads/itempools-guide.35180 Как оказалось, Item pool и таблица предметов с выпадением одно и то же, но чуть отличаются. Если задать в редакторе в свойствах выбранного юнита на карте таблицу с предметами, то работает. А триггерный аналог ItemPool никакой связи между руной и умирающим не образует, ItemPool только помогает рандомный итем достать и все =(. Получается тоже самое, при получений руна дропается, но она ничего не делает. только через таблицу в свойствах юнита можно задать.
Не ловится событием "юнит призывает боевую единицу". Зато, ловится событием "Юнит вошел в регион". Можно было просто запомнить и пересоздать триггерно этого юнита.
Злые духи (у орды)/ Москиты (у нежити) 'AOls'/'AUls' - При активации заклинания от кастера вылетают духи, которые высасывают у врагов хп. И отдают добытые хп кастеру, тем самым пополняя ему здоровье. Это особый призыв духов, но имеет некую особенность, событие триггеров "юнит - вызывает боевую единицу" не считает, что этих духов призвали. Словить можно по событию "юнит входит в регион ... ". Уход из мира живых (исчезновение) можно отследить с помощью "юнит умирает". Есть у духов способность "москиты" 'Aloc' (надеюсь знаете что это такое? это такая способность, которая скрывает полоску здоровья, делает юнитов невыделяемыми, позволяет проходить сквозь объекты. Часто эта способность используется dummy-unit. Имеет недостаток, на такого юнита нельзя натравить мышкой. Кстати, способность москиты 'Aloc' и способности 'AOls'/'AUls' тесно связаны между собой. Если удалить у призываемой саранчи способность "москиты" 'Aloc', то духи-саранчи при вызове перестают кружится, стоят на месте, короче, ничего не хотят делать. Давайте разберемся в характеристиках абилки, как она работает: "Число членов стаи" - максимум вызванных москитов, "Максимум членов стаи на цель" - максимальное возможное количество москитов, сфокусированных на одном юните. "Фактор возвращенного урона" - сколько процентов (%) урона, нанесенным москитом, превращается в здоровье, затем это здоровье отдаст кастеру при возврате к нему. "Порог возвращенного урона" - максимальное число похищенного здоровья одним москитом, необходимое для возврата к кастеру и передачи герою добытого здоровья. Если порог больше или равно кол-во похищенного хп, то москит отдаст здоровье кастеру. Москит может похитить здоровье у одной цели, если будет мало, полетит к следующей цели, и так будет накапливать похищенное здоровье. "Интервал отпускания боевой единицы" - единицы измерения (в секундах) - задержка между вызовом каждой новой саранчи. Чтобы было понятно: при вызыве появилась первая саранча, через 0.2 секунды появилась вторая, через 0.2 сек третья - и так пока все 20 не появятся. (по умолчанию количество вызванных единиц: 20, по умолчанию: 0.2 сек = >> 20 * 0.2 = 4 секунды, прежде чем последний москит появится, можно проверить дебагом). "Область воздействия" - радиус действия саранчи. показывает, как далеко саранча может отойти от заклинателя, она мгновенно возвращается, если расстояние между ее положением и заклинателем больше заданного значения. По поводу урона - урон наносят сами вызванные юниты, и весь наносимый ими урон является физическим уроном (наносится с руки), так как понижается защитой. Не сбивает текущий приказ кастера, кастер останавливается, чтобы юзнуть скилл, а потом продолжает делать дальше дела
Завод 'ANfy'/ Мини-завод 'ANsy'/'ANs1'/'ANs2'/'ANs3' - пассивка с иконкой, каждый раз создает новых маленьких заводных гоблинов. Интервал порождения - время, через которое создается новый гоблин. Есть "радиус подчинения" - если гоблин отойдет дальше этого радиуса от завода, то погибнет. Это очень похоже на призыв, там таймер жизни нацепляют, наносится дополнительный урон, как вызванным существам, от магических заклинаний. Но не ловится событием "юнит призвал боевую единицу", зато можно ловить по событию "юнит вошел в область". Неплохо сочетается со способностью "сбор" 'ARal', "Сборный пункт" - указываешь флаг в точку, где будет скапливаться все войско (как только появится рядом, он побежит к точке сбора).
Вообще есть ли такая которая делает чтобы призванное существо не умирало после смерти
Да почти все способности такие: призванное существо не умирает после смерти героя. Проверял. Есть исключение - это у трупоедов и зов возмездия. Если есть особые случаи не работы показывай, что не работает и так далее

23

» WarCraft 3 / Как сделать способность?

Похожие вопросы:

ответ
Кину наработку, в триггерах разбираешься?
ЛПХОХЫОПЫ, сделано. Как делается. можно посмотреть в триггерах.
ответ
Рунные браслеты давать тем, на ком хочешь распознать тип урона(лучше всем сразу). Нет не надо... просто событие на отлов урона с проверкой что урон меньше 0 и сразу нанести такой же урон только больше 0( так как все заклинания с нанесением урона будут исцелять).
Проще говоря "браслеты", это как детект на то, что урон не может исцелять, а поскольку браслеты реагируют только на маг урон, соответсвенно любой "исцеляющий урон" и есть магическим.
ответ
учить джасс и юзать таймеры

23

» WarCraft 3 / Стандартные кампании

Похожие вопросы:

ответ
Spector_Mark, не происходит вообще ничего, открывается окно в котором я выбираю файл своей кампании и ничего не происходит.
файл прикрепил.
Короче ненавижу варик за такие выкрутасы я просто в бешенстве. Эту проблему можно исправить только бэкапом которого у меня нету, хотел попробовать при помощи всяких фиксеров карт но они не видят формат кампании так что полный пиздец. Все, тема закрыта.
ответ
XGM Bot:
Похожие вопросы:

ответ
Misha24:
нестандартных единиц с нестандартными моделями
я через редактор кампаний нажимал на одну миссию правой кнопкой редактировать
потом я сохранял карту отдельно
когда варике открываю карту то все юниты теряют свои модели на стандартные
как мне сделать чтобы модели и все прочее сохранялось
Карту нужно запаковать в архив компании.

ответ
Всё хорошо, не обращайте внимания, дорогие друзья :)
ответ
В другие карты = подгружает в вар и использует эти звуки, пока вар не будет перезапущен.

23

» WarCraft 3 / Не открывается карта, никак!

Похожие вопросы:

ответ
OlegSharmuta, вторая карта перестала работать после того, как ты её обычным редактором открыл или сама по себе?
OlegSharmuta, скачал её, она защищена криво, поэтому не работает в игре и не открывается в редакторе. Тебе нужно найти рабочую версию, или можешь попробовать сломать депротектором эту.
ответ
Darknessay, у меня открывает все.
ответ
Steal nerves:
Короче порылся в ХГМ, потыкал, все испробывал, и сам нашел ответ, вот несколько моментов для того, чтобы заработал:
  1. Требуется установленный Warcraft 3: The Frozen Throne последней версии 1.26a. Скачайте нормальный варкрафт 3, а то попадаются урезанные или нерабочие версии. Лучше оригинальную версии приобрести, и обновить. Хотя пиратки тоже неплохи. Вот использую сборкой от R.G. Mechanics
  2. Путь к программе НЕ ДОЛЖЕН содержать русских символов
  3. Совершайте установку в отдельную от Warcraft 3 папку
  4. Рекомендуется приостановить антивирусные программы до установки, потом выполнить установку, затем добавить папку c JNGP в исключения, и потом только снова включить антивирусы. Эта программа вторгается в процесс worldedit.exe, поэтому может считаться вредоносной
  5. Не трогайте файл worldedit121.exe, он должен быть и в папке игры и в папке JNGP
  6. Сначала "Сохранить карту", только потом "Проверка карты", а ещё иногда бывает лучше сохранять пару раз
Выше, это стандартное описание для работы. Если не сработает, пробуем вот, что:
  1. Выставляем оптимальные настройки к JNGP, указанные на скрине (см. ссылку) xgm.guru/forum/showthread.php?t=13118 Обычно, эти настройки должны быть изначально после установки JNGP (ну мало ли пригодятся)
Теперь суть моей проблемы (не знаю, что из этих ниже пунктов сработало, но сработало):
  1. Я установил игру и JNGP на рабочий стол. Потому что на диске С, в папках типа Program Files.(x86) и др. блокирует браундмер. Обычно требует назойливо для работы права администратора, очень раздражает. Но сомневаюсь, что заработало из-за этого. Раньше не мешало нисколько.
  2. Запустить JNGP в режим совместимости. Заходим в свойство exe-шника. Поставил семерку.
  3. Если UMS изначально включен, то выключить его и включить (Enable UMS). Потом перезапустить WE. Скорее всего из-за него.
Из-за UMS также бывают ошибки: могут выскачить 2-3 окна : что отсутствует TriggerClearActions и layerAll. Когда пропускаешь эти окна, просто нажав на ок, затем появляется ошибка с памятью и уже потом закрывается редактор. Происходят такие ошибки, если пытаешься открыть обычным редактором карту, отредактированную в JNGP. Такая ошибка происходит, если некорректно настроен UMS (выкл. потом вкл.). Такая ошибка происходит, если открыть обычным редактором взломанную карту, которая наверняка сделана в UMS и использует необычный jass и прочие преимущества JNGP. Ошибки с UMS могут иногда происходить, поэтому скорее всего пункт 10 поможет
  1. Если UMS перестает работать (некорректно работает), а 10 пункт не помогает. То есть плагин UMS по каким-то причинам не запускается, а JNGP стоит галочка напротив UMS (говорит, что включен). Короче узнать, что он запущен, можно при открытий редактора вместо стандартного окна выскакивает окно UMS. Если не выскакивает, надо попробовать завести снова работать. Плагин может по каким-то причинам сломаться (один раз баловался в настройках JNGP). Пробуйте потом удалить JNGP и потом заново переустановить. Или выкл. и вкл, UMS затем выйти из jngp, удалить и заново переустановить
пп
ответ
Может, он не war3map.j читает, а как-то еще?
Как-то еще.

23

» WarCraft 3 / Как сделать случайное событие?

Похожие вопросы:

ответ
nvc123, ну так потому я и подписался как Кэп. Просто тема почему-то до сих пор не закрыта, вот я и подумал, что твой ответ не понятен. Ибо, уложить такую формулировку в одно слово - это, конечно, мастерство :)
ответ
Объясню, почему я удалил код: после проведённого за кодом времени, я понял, что сильно погорячился, задав такой глупый вопрос. Стоило отдохнуть, проветрить голову, и решение нашлось. Тем, кто столкнулся с хоть самую малость, но похожей проблемой, дам совет: всегда проверяйте соответствия заклинаний, написанных в коде jass (CTRL + D, если кто не знает, как узнать id заклинания) и ,конечно, сам синтаксис. Также посоветую не утраивать "свалку" в коде, как это сделал я. В общем, если кому интересно, как я решил проблему, пишите - расскажу или даже помогу если у вас она схожая.(Всё дело во внимательности)...
Сброшу код триггера таким, каким я его хотел видеть изначально:
function MU_Check_lvl_four takes nothing returns boolean
    if ( not ( GetUnitAbilityLevelSwapped('A011', udg_Akame_Killer) == 4 ) ) then
        return false
    endif
    return true
endfunction

function MU_Check_lvl_three takes nothing returns boolean
    if ( not ( GetUnitAbilityLevelSwapped('A011', udg_Akame_Killer) == 3 ) ) then
        return false
    endif
    return true
endfunction

function MU_Check_lvl_two takes nothing returns boolean
    if ( not ( GetUnitAbilityLevelSwapped('A011', udg_Akame_Killer) == 2 ) ) then
        return false
    endif
    return true
endfunction

function MU_Check_lvl_one takes nothing returns boolean
    if ( not ( GetUnitAbilityLevelSwapped('A011', udg_Akame_Killer) == 1 ) ) then
        return false
    endif
    return true
endfunction

function MU_Second_Conditions takes nothing returns boolean
    if ( not ( UnitHasBuffBJ(GetEventDamageSource(), 'B008') == true ) ) then
        return false
    endif
    if ( not ( GetEventDamageSource() == udg_Akame_Killer ) ) then
        return false
    endif
    return true
endfunction

function MU_Start_Conditions takes nothing returns boolean
    if ( not ( UnitHasBuffBJ(GetAttacker(), 'B008') == true ) ) then
        return false
    endif
    if ( not ( GetAttacker() == udg_Akame_Killer ) ) then
        return false
    endif
    return true
endfunction

function Trig_MU_Conditions takes nothing returns boolean
    if ( not MU_Start_Conditions() ) then
        return false
    endif
    return true
endfunction

function MU_Venum_Check takes nothing returns boolean
    if ( not ( udg_MU_Venum_counter == 2 ) ) then
        return false
    endif
    return true
endfunction

function MU_del takes nothing returns nothing 
    if ( MU_Check_lvl_one() ) then
        call SetPlayerAbilityAvailableBJ( true, 'A00X', GetOwningPlayer(GetEventDamageSource()) )
        call UnitRemoveAbilityBJ( 'A00X', GetEventDamageSource() )
    else
        if ( MU_Check_lvl_two() ) then
            call SetPlayerAbilityAvailableBJ( true, 'A00U', GetOwningPlayer(GetEventDamageSource()) )
            call UnitRemoveAbilityBJ( 'A00U', GetEventDamageSource() )
        else
            if ( MU_Check_lvl_three() ) then
                call SetPlayerAbilityAvailableBJ( true, 'A00Y', GetOwningPlayer(GetEventDamageSource()) )
                call UnitRemoveAbilityBJ( 'A00Y', GetEventDamageSource() )
            else
                if ( MU_Check_lvl_four() ) then
                    call SetPlayerAbilityAvailableBJ( true, 'A013', GetOwningPlayer(GetEventDamageSource()) )
                    call UnitRemoveAbilityBJ( 'A013', GetEventDamageSource() )
                else
                    call DoNothing(  )
                endif
            endif
        endif
    endif
endfunction


function Trig_MU_Actions takes nothing returns nothing
    call DestroyTrigger(udg_MU_trig)
    set udg_MU_Venum_counter = GetRandomInt(1, 5)
    set udg_MU_TG = GetAttackedUnitBJ()
    if ( MU_Venum_Check() ) then
        if ( MU_Check_lvl_one() ) then
        call UnitAddAbilityBJ( 'A00X', udg_Akame_Killer )
        call SetPlayerAbilityAvailableBJ( false, 'A00X', GetOwningPlayer(udg_Akame_Killer) )
    else
        if ( MU_Check_lvl_two() ) then
            call UnitAddAbilityBJ( 'A00U', udg_Akame_Killer )
            call SetPlayerAbilityAvailableBJ( false, 'A00U', GetOwningPlayer(udg_Akame_Killer) )
        else
            if ( MU_Check_lvl_three() ) then
                call UnitAddAbilityBJ( 'A00Y', udg_Akame_Killer )
                call SetPlayerAbilityAvailableBJ( false, 'A00Y', GetOwningPlayer(udg_Akame_Killer) )
            else
                if ( MU_Check_lvl_four() ) then
                    call UnitAddAbilityBJ( 'A013', udg_Akame_Killer )
                    call SetPlayerAbilityAvailableBJ( false, 'A013', GetOwningPlayer(udg_Akame_Killer) )
                else
                    call DoNothing(  )
                endif
            endif
        endif
    endif
    set udg_MU_trig = CreateTrigger()
    call TriggerRegisterUnitEvent( udg_MU_trig, udg_MU_TG, EVENT_UNIT_DAMAGED )
    call TriggerAddCondition( udg_MU_trig, Condition( function MU_Second_Conditions ) )
    call TriggerAddAction( udg_MU_trig, function MU_del )
    else
        call DoNothing(  )
    endif
endfunction

//===========================================================================
function InitTrig_MU takes nothing returns nothing
    set gg_trg_MU = CreateTrigger(  )
    call TriggerRegisterAnyUnitEventBJ( gg_trg_MU, EVENT_PLAYER_UNIT_ATTACKED )
    call TriggerAddCondition( gg_trg_MU, Condition( function Trig_MU_Conditions ) )
    call TriggerAddAction( gg_trg_MU, function Trig_MU_Actions )
endfunction
Суть триггера:
Имеется способность с четырьмя уровнями. На каждом уровне урон способности разный, а шанс срабатывания всегда 25%. При атаке герой, имеющий такую способность имеет шанс (25%) на отравление противника.
Переменная udg_Akame_killer равносильна GetEventDamageSource()
P.S. Возможно кому-то даже пригодится этот код... Сделан полнейшим неумехой в плане jass, так что не судите строго!
ответ
Поменяй random real на random integer
Random real возвращает и дробную часть
ответ
Ну только триггерные системы отрядов, была такая...
Вот пример ссылочка
Были и другие, поиск в помощь.
Вот еще ссылка

23

» WarCraft 3 / Сделать юнита неуязвимым на время

Похожие вопросы:

ответ
XGM Bot:
Похожие вопросы:

ответ
Создать список "станящих" баффов, при потере баффа из этого списка проверять есть у юнита еще какой либо бафф из списка.
Если нет - снимать паузу, если есть - ничего не трогать.
ответ
лови приказ и будет тебе счастье
ISSUED_*_ORDER
ответ
~16GB:
ImbaStyle,
приказ windwalk отдаётся в стане
ответ
Нашёл адекватное решение своей проблемы: громовая поступь Кэрна.

ответ
А что мешает поставить время жизни 0 сек, тогда у него не будет таймера жизни и он не помрет по истечению времени.
Используя событие - юнит призвал юнита, можно установить желаемое время жизни призванного юнита.

23

» WarCraft 3 / Вопрос по башне

Похожие вопросы:

ответ
обилие ошибок
сложно расшифровываемое описание
все проблемы описаны в F.A.Q и начальных статьях по WE
[censored]
ответ
Мб сбил теги анимаций? Там все завязано на тегах, у одной башни чертова куча альтернейт анимаций, вероятно ты сбил порядок анимаций в контейнере.
ответ
Отслеживать вызов юнита и добавлять в группу
Каждые х сек. проверять приказ у всех этих юнитов и отдавать приказ строить.
ответ
  1. Сделай стандартную ауру хила и при ее изучении добавляй и задавай нужный уровень ауры торнадо. У нее даже иконки нет, так что очень удобно.
  2. Я могу расписать, как, но сложно, так что пусть другие ответят, мб есть вариант проще.
  3. Если без мемхака: сделай абилу на основе предметной на повышение брони с 31 уровнем, на первом 0 повышения, на последнем +30. Что дальше делать, сам догадайся...
ответ
~8gabriel8:
У декораций для вариаций есть несколько моделей с тем же именем и припиской: ...00, ...01, ...02... А в Редакторе объектов для модели указывается только имя без приписки. У башен же есть несколько вариаций анимации Stand, которые идут для Смотровой башни, Осадной башни, Стрелковой башни и Магической, странно, что у тебя отображает лишь Смотровую и Осадную. Запамятовал, можно ли триггером выставлять декорациям теги анимации, но если да, то добавляй тег Смотровой башни. Другой вариант - сделать в Редакторе объектов Боевую единицу Башню со способностью Москиты, чтобы она была невыбираема. Способность эту можно поставить через JNGP или выбрав строку со способностями, нажав Shift+Enter, напечатать Aloc.

23

» WarCraft 3 / Управление камерой

Похожие вопросы:

ответ
периодически устанавливать камеру в нужном положении\высоте
или в мемхак
ответ
А вот в этом меню галочки проставил?